﻿function _ManPostulantes() {

    this.ListaProductos = "";
    this.ListaPromociones = "";
    this.ListaConvocatorias = "";
    this.VistaLista = "";
    this.CargarFiltros = true;

    this.EventoCambioConvocatoria = function () {

    };

    //Donde se visualiza la ficha y el estado del postulante
    this._FichaEstadoPostulante = null;

    this.PreInit = function () {
        var _parent = this;
        if (this.CargarFiltros) {
            this.CargaDeFiltros();
        }

        this._ContList.off("click", ".ver-ficha-postulante");
        this._ContList.on("click", ".ver-ficha-postulante", function () {
            var obj = $(this);

            if (obj.attr("data-estado-postulante") == "VEN001A"
            || obj.attr("data-estado-postulante") == "VEN002A"
            || obj.attr("data-estado-postulante") == "VEN007X"
            ) {
                _parent.__VerFicha(obj);
            } else {
                _parent.__VerFichaResumen(obj);
            }


        });

        this.CargaReportes();
    }

    this.CargaReportes = function () {
        var _parent = this;
        var cont = _parent._getCont();

        cont.find("#_OpcionesConvocatoria").off("change", "#generar-reporte");
        cont.find("#_OpcionesConvocatoria").on("change", "#generar-reporte", function () {
            var obj = $(this);
            window.location = URL_PAGE + obj.val();
        });
    };

    this.CargaDeFiltros = function () {
        var _parent = this;

        $("#cerrar-ficha").click(function () {
            _parent._ContForm.slideUp();
            _parent._ContList.slideDown();
        })

        $("#limpiarBusqueda").click(function () {
            _parent._getContToolList().find("#nombrecompleto").val("");
            _parent._getContToolList().find("#Prod_Codigo").val("");
            _parent._getContToolList().find("#Prom_Codigo").val("");
            _parent._getContToolList().find("#Conv_Codigo").val("");
            _parent._getContToolList().find("#codestado").val("");
            _parent.__ListarTabla();
        });

        this.__CambiarEstado();
        this.__Filtrar();
        this.__VerLogEstados();
        this.CargarLista("ABIERTA");


        this._ContList.off("click", ".btn_orden_postulante");
        this._ContList.on("click", ".btn_orden_postulante", function () {
            var obj = $(this);
            _parent._ContList.find("#orden_convocatoria").val(0);
            _parent._ContList.find("#orden_postulante").val(obj.attr("data-orden"));
            $("#limpiarBusqueda").click();
        });


        $('#modal-descuento-postulante').delegate('#enviar-descuento', 'click', function () {
            _parent.enviarDescuento();
        });

        this._ContList.off("click", ".btn_orden_convocatoria");
        this._ContList.on("click", ".btn_orden_convocatoria", function () {
            var obj = $(this);
            _parent._ContList.find("#orden_convocatoria").val(obj.attr("data-orden"));
            _parent._ContList.find("#orden_postulante").val(0);
            $("#limpiarBusqueda").click();
        });

        this._ContList.off("click", ".btn-cambio-convocatoria");
        this._ContList.on("click", ".btn-cambio-convocatoria", function () {
            var obj = $(this);

            $.ajax({
                url: URL_PAGE + "Administrador/Postulante/Cambioconvocatoria",
                type: "post",
                data: {
                    idpostulante: obj.attr("data-idpostulante")
                },
                success: function (html) {
                    var modal = _parent._getModal(html);

                    modal.find("#aceptar").click(function () {
                        modal.find("#form-cambio-convocatoria").submit();
                    });

                    modal.find("#form-cambio-convocatoria").validationEngine({
                        ajaxSubmit: true,
                        onValidationComplete: function (form, status) {

                            if (status) {
                                modal.find("#form-cambio-convocatoria").ajaxSubmit({
                                    success: function (responseText, statusText, xhr, $form) {
                                        //_parent.__LimpiarBusqueda();
                                        alert("Se cambio la convocatoria al postulante");

                                        modal.modal('hide');
                                        _parent.ListEspecial({ idregistro: responseText.idregistro });
                                    }
                                });
                            }
                        }
                    });

                    modal.find('.modal-header').find("h2").html("Cambio de convocatoria");
                    modal.css({
                        'top': "40%",
                        'width': '500px',
                        'margin-left': function () {
                            return -($(this).width() / 2);
                        }
                    });
                    modal.modal();


                },
                complete: function (data) {

                }
            });
        });




    };

    this.__LimpiarBusqueda = function () {

        var _parent = this;

        _parent._getContToolList().find("#nombrecompleto").val("");
        _parent._getContToolList().find("#Prod_Codigo").val("");
        _parent._getContToolList().find("#Prom_Codigo").val("");
        _parent._getContToolList().find("#Conv_Codigo").val("");
        _parent._getContToolList().find("#codestado").val("");
    };

    this.CargarLista = function (estado) {
        var _parent = this;

        var loadingConvocatoria = _parent.__LoadingControl(_parent._ContToolList.find("#Conv_Codigo"));
        var loadingProducto = _parent.__LoadingControl(_parent._ContToolList.find("#Prod_Codigo"));
        var loadingPromocion = _parent.__LoadingControl(_parent._ContToolList.find("#Prom_Codigo"));

        $.ajax({
            url: URL_PAGE + "Shared/Catalogo/ListarConvocatorias",
            type: "post",
            data: {
                estado: estado
            },
            success: function (data) {
                _parent.ListaPromociones = data.Promociones;
                _parent.ListaProductos = data.Productos;
                _parent.ListaConvocatorias = data.Convocatorias;

                _parent.CargarConvocatorias(_parent.ListaConvocatorias);
                _parent.CargarProductos(_parent.ListaProductos);
                _parent.CargarPromocion(_parent.ListaPromociones);
                //_parent.__ListarTabla();
            },
            complete: function (data) {
                //Cargamos las convocatorias
                loadingConvocatoria.remove();
                loadingProducto.remove();
                loadingPromocion.remove();
            }
        });
    }

    this.CargarProductos = function (lista) {
        //Cargamos los productos
        var _parent = this;
        objChild = _parent._ContToolList.find("#Prod_Codigo");
        objChild.find("option").remove();

        var row = "<option value=\"\">Seleccione producto/Todos</option>";
        $(row).appendTo(objChild);

        $.each(lista, function (i, j) {
            var row = "<option value=\"" + j.id + "\">" + j.nombre + "</option>";
            $(row).appendTo(objChild);
        });
    };

    this.CargarPromocion = function (lista) {
        //Cargamos las promociones
        var _parent = this;

        objChild = _parent._ContToolList.find("#Prom_Codigo");
        objChild.find("option").remove();

        var row = "<option value=\"\">Seleccione promocion/Todos</option>";
        $(row).appendTo(objChild);

        $.each(lista, function (index, value) {
            var row = "<option value=\"" + value.id + "\">" + value.nombre + "</option>";
            $(row).appendTo(objChild);
        });
    }

    this.CargarEstadosConvocatoria = function (lista) {
        //Cargamos los estados que correspondde a cada convocatoria
        var _parent = this;

        objChild = _parent._ContToolList.find("#codestado");
        objChild.find("option").remove();

        var row = "<option value=\"\">Seleccione estado/Todos</option>";
        $(row).appendTo(objChild);

        $.each(lista, function (index, value) {
            var row = "<option value=\"" + value.id + "\">" + value.nombre + "</option>";
            $(row).appendTo(objChild);
        });
    }

    this.CargarConvocatorias = function (lista) {
        //Cargamos las convocatorias
        var _parent = this;

        objChild = _parent._ContToolList.find("#Conv_Codigo");
        objChild.find("option").remove();

        var row = "<option value=\"\">Seleccione convocatoria/Todos</option>";
        $(row).appendTo(objChild);

        $.each(lista, function (i, j) {
            var row = "<option value=\"" + j.id + "\" data-Conv_Codigo=\"" + j.Conv_Codigo + "\">" + j.nombre + "</option>";
            $(row).appendTo(objChild);
        });
    }

    this.__Filtrar = function () {
        var _parent = this;

        _parent._ContToolList.off("change", "#codestado");
        _parent._ContToolList.on("change", "#codestado", function () {
            _parent.__ListarTabla();
        });

        _parent._ContToolList.off("change", "#estadoconvocatoria");
        _parent._ContToolList.on("change", "#estadoconvocatoria", function () {
            var obj = $(this);
            _parent.CargarLista(obj.val());
        });

        _parent._ContToolList.off("change", "#Conv_Codigo");
        _parent._ContToolList.on("change", "#Conv_Codigo", function () {
            //Se debe cargar los nuevos estados de la convocatoria dependiendo si 
            //si la fecha de inscripción ya acabo o agarra la fecha de administración
            var obj = $(this);

            $.ajax({
                url: URL_PAGE + "Shared/Catalogo/ListarEstadosPorConvocatoria",
                data: { Conv_Codigo: obj.val(), vistalista: _parent.VistaLista },
                type: "post",
                success: function (data) {
                    _parent.CargarEstadosConvocatoria(data.Estados);
                }
            })            
            _parent.__ListarTabla();
        });

        //Cambio del Producto
        _parent._ContToolList.off("change", "#Prod_Codigo");
        _parent._ContToolList.on("change", "#Prod_Codigo", function () {
            var obj = $(this);

            //Promocion
            var listaPromocion = [];
            $.each(_parent.ListaPromociones, function (index, value) {
                if (obj.val() == value.producto) {
                    listaPromocion.push(value);
                }
            });

            _parent.CargarPromocion(listaPromocion);
            _parent.__ListarTabla();
        });

        //Cambio de la promocion
        _parent._ContToolList.off("change", "#Prom_Codigo");
        _parent._ContToolList.on("change", "#Prom_Codigo", function () {
            var obj = $(this);

            _parent.__ListarTabla();
        });

        _parent._ContToolList.off("keypress", "#nombrecompleto");
        _parent._ContToolList.on("keypress", "#nombrecompleto", function (event) {
            if (event.which == 13) {
                _parent.__ListarTabla();
            }
        });

    };

    this.__ListarTabla = function () {
        var _parent = this;

        //Mostrando la barra de herramientas del listado
        var obj = _parent._ContToolList.find("#Conv_Codigo");
        _parent.EventoCambioConvocatoria(obj);
       
        _parent.__VariableFormList();
        _parent.List({ VistaLista: _parent.VistaLista, Conv_Codigo : obj.val() });
    }

    this.__VariableFormList = function () {
        var _parent = this;
        _parent._ContList.find("#Conv_Codigo").val(_parent._ContToolList.find("#Conv_Codigo").val());
        _parent._ContList.find("#codestado").val(_parent._ContToolList.find("#codestado").val());
        _parent._ContList.find("#nombrecompleto").val(_parent._ContToolList.find("#nombrecompleto").val());

        _parent._ContList.find("#Prod_Codigo").val(_parent._ContToolList.find("#Prod_Codigo").val());
        _parent._ContList.find("#Prom_Codigo").val(_parent._ContToolList.find("#Prom_Codigo").val());
        _parent._ContList.find("#estadoconvocatoria").val(_parent._ContToolList.find("#estadoconvocatoria").val());
    };



    this.enviarDescuento = function () {
        var _parent = this;
        var obj = $(this);

        $.ajax({
            url: URL_PAGE + "Administrador/Postulante/CambiarEstadoPostulacionDescuento",
            type: "post",
            data: {
                IdPostulante: $("#Post_ID2").val(),
                CodigoConvocatoria: $("#Cod_Conv2").val(),
                estadoPostulante: $("#estado_postulante2").val(),
                otroDscto: $("#otroDescuento").val(),
                motivo: $("#comentarioDescuento").val(),
                tipoDscto: $("#estado_descuento").val()
            },
            success: function (data) {
                _parent.List();
                $("#modal-descuento-postulante").modal('hide');
            }
        });
    };

    this.__CambiarEstado = function () {
        var _parent = this;
        var modal = null;

        var form = null;
        var botonenvio = "";

        this._ContList.off("click", ".estado-postulante");
        this._ContList.on("click", ".estado-postulante", function () {
            var obj = $(this);

            if (obj.attr("data-value") == "Observar") {

                var modal = _parent._getModalV2();

                $.ajax({
                    type: "post",
                    url: URL_PAGE + "Administrador/Postulante/FormObservarEstado",
                    data: {
                        IdPostulante: obj.attr("data-idpostulante"),
                        EstadoPostulante: obj.attr("data-estadocodigo")
                    },
                    success: function (html) {
                        modal.modal('show');
                        modal.find(".modal-body").html(html);                                                
                        modal.find(".modal-header").find("h2").html(modal.find(".modal-body").find("#TituloFormulario").val());

                        //Obteniendo el formulario
                        form = modal.find("#frmEnvioObservacion");
                        modal.find(".modal-footer").find("#aceptar").click(function () {
                            form.submit();
                        });

                        //Habilitando el formulario para el envio
                        form.validationEngine({
                            ajaxSubmit: true,
                            onValidationComplete: function (form, status) {

                                if (status) {
                                    form.ajaxSubmit({
                                        success: function (responseText, statusText, xhr, $form) {
                                            _parent._MensajesOperacion("success",
                                                    "Observación registrada",
                                                    "La observación fue registrada y enviada por email al postulante");
                                            modal.modal('hide');
                                            _parent.ListEspecial({ idregistro: obj.attr("data-idpostulante") });
                                        }
                                    });
                                }
                            }
                        });

                    }
                });



            } else if (obj.attr("data-value") == "Aprobar") {
                if (confirm("Desea aprobar la etapa")) {
                    $.ajax({
                        url: URL_PAGE + "Administrador/Postulante/CambiarEstadoPostulacion",
                        type: "post",
                        data: {
                            IdPostulante: obj.attr("data-idpostulante"),
                            estadoPostulante: obj.attr("data-estadocodigo"),
                            _cargarLoadingModal: 1
                        },
                        success: function (data) {
                            obj = jQuery.parseJSON(data);

                            _parent.ListEspecial({ idregistro: obj.idregistro });
                        }
                    })
                }
            } else if (obj.attr("data-value") == "Descuento") {

                var modal = _parent._getModalV2();

                $.ajax({
                    type: "post",
                    url: URL_PAGE + "Administrador/Postulante/FormDescuento",
                    data: { idpostulante: obj.attr("data-idpostulante") },
                    success: function (html) {
                        modal.modal('show');
                        modal.find(".modal-body").html(html);
                        modal.find(".modal-header").find("h2").html("Ingreso de descuentos");

                        var body = modal.find(".modal-body");
                        var montoAcademico = body.find("#montoAcademico").val();
                        var montoAdicional = body.find("#montoAdicional").val();
                        var estadoDescuento = body.find("#estado_descuento");
                        var montoAPagarDiv = body.find("#montoAPagarDiv");
                        var descuentoDiv = body.find("#descuentoDiv");
                        var otroDescuento = body.find("#otroDescuento");

                        modal.find(".modal-body").css({
                            overflow: 'auto',
                            'height': '360px',
                            'overflow-x': 'scroll'
                        });
                        modal.css({
                            width: '800px',
                            'margin-left': function () {
                                return -($(this).width() / 2);
                            }
                        });

                        estadoDescuento.change(function () {
                            var obj = $(this);
                            if (obj.val() != "Otros") {
                                var monto = montoAcademico - montoAcademico * obj.val() / 100 + 1 * montoAdicional;
                                montoAPagarDiv.html(monto);

                                var descuento = montoAcademico * obj.val() / 100;
                                descuentoDiv.html(descuento);
                                otroDescuento.val("");
                                otroDescuento.attr("disabled", "disabled");
                            } else {
                                otroDescuento.removeAttr("disabled");
                            }
                        });

                        var form = body.find("#frmEnvioDescuento");

                        _parent.StyleInputFile(form.find("#cronogramaespecial"));
                        _parent._ValidacionExtensionArchivo(
                            form.find("#cronogramaespecial")
                            , ["xls", "xlsx", "pdf"]
                            , "Formato de archivo incorrecto para la foto"
                            , "Los formatos permitidos son xls, xlsx, pdf"
                       );


                        form.validationEngine({
                            ajaxSubmit: true,
                            onValidationComplete: function (form, status) {
                                if (status) {
                                    form.ajaxSubmit({
                                        success: function (responseText, statusText, xhr, $form) {

                                            alert("Se envió el monto a pagar al postulante");
                                            modal.modal('hide');
                                            _parent.ListEspecial({ idregistro: obj.attr("data-idpostulante") });
                                        }
                                    });
                                }
                            }
                        });

                        otroDescuento.keypress(function (event) {
                            if (event.which == 13) {
                                event.preventDefault();
                                var valor = otroDescuento.val();
                                var monto = montoAcademico - montoAcademico * valor / 100 + 1 * montoAdicional;
                                montoAPagarDiv.html(monto);
                                var descuento = montoAcademico * valor / 100;
                                descuentoDiv.html(descuento);
                            }
                        }).change(function () {
                            var valor = otroDescuento.val();
                            var monto = montoAcademico - montoAcademico * valor / 100 + 1 * montoAdicional;
                            montoAPagarDiv.html(monto);
                            var descuento = montoAcademico * valor / 100;
                            descuentoDiv.html(descuento);
                        });

                        modal.find(".modal-footer").find("#aceptar").click(function () {
                            if (confirm("Desea confirmar el monto a pagar del postulante")) {
                                form.submit();
                            }
                        });



                    }
                });
            }
        });

        $("#estado_observacion").change(function () {
            if ($("#estado_observacion option:selected").text().toUpperCase() == "OTROS") {
                $("#msjeObservacion").prop('disabled', false);
                $("#msjeObservacion").val('');
                $("#msjeObservacion").focus();
            } else {
                $("#msjeObservacion").val($('option:selected', this).attr('data-value'));
                $("#msjeObservacion").prop('disabled', true);
            }
        });

    }

    //Ver la ficha del postulante
    this.__VerFicha = function (obj) {

        var _parent = this;
        var fichaEstadoPostulante = _parent._ContForm.find("#ficha-datos");

        fichaEstadoPostulante.html("");
        //Cargamos la ficha los scripts, cuando esta cargado volvemos a llamar a la funcion
        if (_parent._FichaEstadoPostulante == null) {
            jQuery.getScript(URL_PAGE + "Scripts/app/postulante/Ficha/Ficha_EstadoPostulante.js", function () {
                _FichaEstadoPostulante.prototype = new Mantenimiento();
                _parent._FichaEstadoPostulante = new _FichaEstadoPostulante();
                _parent.__VerFicha(obj);
            });
        } else {

            $.ajax({
                url: URL_PAGE + "Postulante/Ficha/Index2",
                type: "post",
                data: {
                    Clie_ID: obj.attr("data-idcliente"),
                    Codigo_Convocatoria: obj.attr("data-codigo-convocatoria")
                },
                success: function (data) {

                    //Ocultando la lista y luego levantando el formulario
                    _parent._ContList.slideUp(function () {
                        _parent._ContForm.slideDown(function () {

                            _parent._FichaEstadoPostulante.EventoDespuesDeEnviarFicha = function () {
                                _parent._FichaEstadoPostulante._EstadoPostulante.EventoDespuesDeEnviarFicha = function () {
                                    _parent._ContForm.slideUp(function () {
                                        _parent._ContList.slideDown(function () {
                                            _parent.__ListarTabla();
                                        });
                                    })
                                }
                            }

                            fichaEstadoPostulante.html(data);
                            _parent._FichaEstadoPostulante.InitFichaEstadoPostulante(
                                    fichaEstadoPostulante.find("#fichas-datos-personales")
                                    , fichaEstadoPostulante.find("#_EstadoFicha")
                                    , obj.attr("data-idcliente")
                                    , obj.attr("data-codigo-convocatoria"));
                        });
                    });


                }
            });
        }
    }

    this.__VerFichaResumen = function (obj) {

        var _parent = this;
        var url = URL_PAGE + "Postulante/Main/FichaResumen";

        var code = obj.attr("data-codigo-convocatoria-corto");

        if (code != null) {
            if (
                (code.indexOf("PEE-OL") == 0) ||
                (code.indexOf("PEE") == 0) ||
                (code.indexOf("DI") == 0) ||
                (code.indexOf("PAE") == 0) ||
                (code.indexOf("PADE") == 0)
            ) {
                url = URL_PAGE + "Postulante/Main/FichaResumenPostgrado";
            }
        }

        jQuery.ajax({
            type: "POST",
            url: url,
            data: {
                Clie_ID: obj.attr("data-idcliente"),
                Codigo_Convocatoria: obj.attr("data-codigo-convocatoria")
            },
            success: function (html) {
                var modal = _parent._getModal(html);

                modal.find('.modal-header').find("h2").html("FICHA RESUMEN");
                modal.find(".modal-footer").find("#aceptar").hide();
                modal.css({
                    'top': "40%",
                    'width': '860px',
                    'margin-left': function () {
                        return -($(this).width() / 2);
                    }
                });
                modal.modal();
            }
        });

    };


    this.__VerLogEstados = function () {
        var _parent = this;
        var modal = jQuery("#modal-general");

        modal.css({
            'top': "40%",
            'width': '600px',
            'margin-left': function () {
                return -($(this).width() / 2);
            }
        });

        this._ContList.off("click", ".ver-log");
        this._ContList.on("click", ".ver-log", function () {
            var obj = $(this);
            $.ajax({
                url: URL_PAGE + "Administrador/Postulante/ListLogEstado",
                type: "post",
                data: {
                    Clie_ID: obj.attr("data-idcliente"),
                    codigo_convocatoria: obj.attr("data-codigoconvocatoria")
                },
                success: function (html) {
                    modal.find(".modal-header").find("h2").html("Historial de estados");
                    modal.find(".modal-body").html(html);
                    modal.find(".modal-footer").find("#aceptar").hide();
                    modal.modal();
                }
            })
        });
    }

}